###高阶函数：函数中套用函数
# 功能：在不更改原函数的基础上适合拓展函数功能

def func():
    def inner(a, b):
        print('func函数内部函数inner')
        return a + b

    return inner


f = func()

# print(f(1, 2))

# x = 2
#
# def f():
#     x = 3
#     print(x)
#
#
# f()
# print(x)

##定义lambda函数
# f1 = lambda a, b: a + b
# print(f1(1, 2))


# def f():
#     pass
#
# l = [1, 2, 3, 4]
# 1.sort(key=f)


##内置函数-----映射函数map（）
# map（）函数接收两个参数，一个是函数，另一个是Iterator返回
l = [1, 2, 3, 4, 5]
results = [n * n for n in l]
# print(results)

# 把可迭代对象的每一个元素拿出来，返回n*n的列表
# print(list(map(lambda n: n * n, l)))
# print(list(map(lambda n: n ** 2, l)))

from functools import reduce

##reduce函数:累积计算
l = [i for i in range(1, 10)]
# print(reduce(lambda x, y: x + y, l))

##filter  过滤函数
# 保留所有的回文数字
nums = [i for i in range(1, 1001)]
print(list(filter(lambda x: str(x) == str(x)[-1::-1], nums)))


